Three approaches to type structure